﻿<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
	<head>
		<title></title>
	</head>
	<body>
	
	    <ul>
            <li>IRQs can interrupt each other. But of same level?</li>
            <li>IRQs can stack up - if same IRQ they can get &quot;lost&quot; (<a 
                    href="http://www.gossamer-threads.com/lists/linux/kernel/494604">Link</a>). 
                If of different level, will queue up.. lower priority queues up, higher 
                intterupts unless masked.</li>
        </ul>
	
	    IRQs are handled by priority and are queued.<h3>
            Questions</h3>
        <p>
            Higher priority IRQs can happen while lower ones are in progress</p>
        <p>
            Can a signle IRQ happen while one is already in progress? ie Int 2 happen while 
            Int 2 is already in progress? If so does it call again, queue it? or lose it?</p>
        <p>
            MtW: This depends on us: we can do this, but can have issues with debugger etc. 
            Right now, we dont allow it.</p>
        <p>
            &nbsp;</p>
        <p>
            One thing to keep in mind: the Hardware IRQ&#39;s are mapped to interrupts 0x20-0x2F</p>
        <h3>
            Links</h3>
        <p>
            <a href="http://en.wikipedia.org/wiki/Interrupt">
            http://en.wikipedia.org/wiki/Interrupt</a><br />
            <a href="http://en.wikipedia.org/wiki/Interrupt_request">
            http://en.wikipedia.org/wiki/Interrupt_request</a><br />
            <a href="http://en.wikipedia.org/wiki/IF_(x86_flag)/">
            http://en.wikipedia.org/wiki/IF_%28x86_flag%29\</a><br />
            <a href="http://wiki.osdev.org/IRQ">http://wiki.osdev.org/IRQ</a><br />
            <a href="http://www.xml.com/ldd/chapter/book/ch09.html">
            http://www.xml.com/ldd/chapter/book/ch09.html</a><br />
        </p>
        <p>
            Interrupt Descriptor Table -
            <a href="http://en.wikipedia.org/wiki/Interrupt_descriptor_table">
            http://en.wikipedia.org/wiki/Interrupt_descriptor_table</a><br />
            Interrupt Threads - <a href="http://en.wikipedia.org/wiki/Interrupt_handler">
            http://en.wikipedia.org/wiki/Interrupt_handler</a><br />
            Efficiency <a href="http://lwn.net/Articles/395783/">
            http://lwn.net/Articles/395783/</a></p>
        <h3>
            <span id="Master_PIC" class="mw-headline">Master PIC</span></h3>
        <ul>
            <li>IRQ 0 — system timer (cannot be changed);</li>
            <li>IRQ 1 — <a class="mw-redirect" 
                    href="http://en.wikipedia.org/wiki/Computer_keyboard" title="Computer keyboard">
                keyboard</a> (cannot be changed);</li>
            <li>IRQ 2 — cascaded signals from IRQs 8–15 (<i>any devices configured to use IRQ 2 
                will actually be using IRQ 9</i>);</li>
            <li>IRQ 3 — <a href="http://en.wikipedia.org/wiki/Serial_port" title="Serial port">
                serial port</a> 2 or 4;</li>
            <li>IRQ 4 — serial port 1 or 3;</li>
            <li>IRQ 5 — <a href="http://en.wikipedia.org/wiki/LPT" title="LPT">LPT</a> port 2 or
                <a href="http://en.wikipedia.org/wiki/Sound_card" title="Sound card">sound card</a>;</li>
            <li>IRQ 6 — <a href="http://en.wikipedia.org/wiki/Floppy_disk_controller" 
                    title="Floppy disk controller">floppy disk controller</a>;</li>
            <li>IRQ 7 — <a href="http://en.wikipedia.org/wiki/LPT" title="LPT">LPT</a> port 1 or 
                sound card (8-bit <a href="http://en.wikipedia.org/wiki/Sound_Blaster" 
                    title="Sound Blaster">Sound Blaster</a> and compatibles). - Special note on 
                IRQ7, Spurious IRQ
                <a href="http://en.wikipedia.org/wiki/Intel_8259#Spurious_Interrupts">
                http://en.wikipedia.org/wiki/Intel_8259#Spurious_Interrupts</a></li>
        </ul>
        <h3>
            <span id="Slave_PIC" class="mw-headline">Slave PIC</span></h3>
        <ul>
            <li>IRQ 8 — <a href="http://en.wikipedia.org/wiki/Real-time_clock" 
                    title="Real-time clock">real-time clock</a>;</li>
            <li>IRQ 9 — free / open interrupt / available /
                <a href="http://en.wikipedia.org/wiki/SCSI" title="SCSI">SCSI</a> (<i>any 
                devices configured to use IRQ 2 will actually be using IRQ 9</i>);</li>
            <li>IRQ 10 — free / open interrupt / available /
                <a href="http://en.wikipedia.org/wiki/SCSI" title="SCSI">SCSI</a> /
                <a class="mw-redirect" href="http://en.wikipedia.org/wiki/Network_card" 
                    title="Network card">NIC</a>;</li>
            <li>IRQ 11 — free / open interrupt / available /
                <a href="http://en.wikipedia.org/wiki/SCSI" title="SCSI">SCSI</a> /
                <a class="mw-redirect" href="http://en.wikipedia.org/wiki/Network_card" 
                    title="Network card">NIC</a>;</li>
            <li>IRQ 12 — <a href="http://en.wikipedia.org/wiki/PS/2_connector" 
                    title="PS/2 connector">PS/2 connector</a> mouse;</li>
            <li>IRQ 13 — math <a class="mw-redirect" 
                    href="http://en.wikipedia.org/wiki/Co-processor" title="Co-processor">
                co-processor</a> / integrated <a class="mw-redirect" 
                    href="http://en.wikipedia.org/wiki/Floating_point_unit" 
                    title="Floating point unit">floating point unit</a> /
                <a href="http://en.wikipedia.org/wiki/Inter-processor_interrupt" 
                    title="Inter-processor interrupt">inter-processor interrupt</a> (Use depends 
                on OS);</li>
            <li>IRQ 14 — primary <a href="http://en.wikipedia.org/wiki/Parallel_ATA" 
                    title="Parallel ATA">ATA</a> channel;</li>
            <li>IRQ 15 — secondary <a href="http://en.wikipedia.org/wiki/Parallel_ATA" 
                    title="Parallel ATA">ATA</a> channel</li>
        </ul>
        <p>
            &nbsp;</p>
	
	</body>
</html>